1. Field of the Invention
The present invention relates generally to a decoding apparatus and method, and in particular, to a decoding apparatus and method using a Perfect Difference-Set Cyclic (PDSC) code.
2. Description of the Related Art
The present invention is directed to a decoding method for a Perfect Difference-Set Cyclic (PDSC) code and/or a Difference-Set Cyclic (DSC) code used for a communication and data storage system. A PDSC (184,102 version) code, one of the above codes, is a shortened version of a PDSC (273,191 version) code, and used for Integrated Service Digital Broadcasting-Terrestrial (ISDB-T) and ISDB-Terrestrial sound broadcasting for radio (ISDB-Tsb) systems, Japanese Digital Terrestrial Television and Radio Broadcasting, etc.
The PDSC code can be expressed as (n, k, s). (7,3,1), (21,11,2), (73,45,3), (273,191,4), (1057,813,5), and (4161,3431,6) are well-known PDSC codes (n, k, s). Herein, ‘n’ denotes the number of codeword bits, ‘k’ denotes the number of information bits, and ‘s’ denotes a non-negative integer. n and k are defined as shown in Equation (1).
                              n          =                                                    2                s                            ×                              (                                                      2                    s                                    +                  1                                )                                      +            1                          ⁢                                  ⁢                  k          =                                    n              -                              (                                                      3                    s                                    +                  1                                )                                      =                                                            2                  s                                ×                                  (                                                            2                      s                                        +                    1                                    )                                            -                              3                s                                                                        (        1        )            
The shortened code such as PDSC (184,102 version) code and also the codes expressed by Equation (1) can be decoded using a decoder illustrated in FIG. 1.
Referring to FIG. 1, key blocks 110, 120, and 160 pass or block input signals according to an enable/disable control signal provided from the exterior. Exclusive OR (XOR) units 130 and 150, which receive two signals. The exterior. XOR units 130 and 150 output ‘0’ when the two received signals are equal, and output ‘1’ when the two received signals are different. A decoder register 140 is a shift register including n_mother_code cells, where the n_mother_code is a length of a codeword defined by Equation (1).
A connection unit 170 includes (2t+1) XOR units, where ‘t’ is defined by Equation (2) and is an error correction capability of the PDSC code.t=2s-1  (2)
The XOR units of the connection unit 170, each of which corresponds to a single decoder check equation, receive (2t+1)-bit data and output a 1-bit result value. For example, in the PDSC (273,191) code, a first check equation w(0) called a ‘basic polynomial’ is defined as shown in Equation (3).w(0)=b272^b254^b248^b226^b222^b205^b169^b160^b157^b146^b144^b113^b106^b105^b86^b76^b71  (3)
In Equation (3), b0-b272 correspond to the number of bits stored in the decoder register 140.
A Perfect Difference-Set (PDS) P is defined as shown in Equation (4).P={0,18,24,46,50,67,103,112,115,126,128,159,166,167,186,196,201}  (4)
Other 2t check equations w(i) can be defined as shown in Equation (5).w(i)=(w(0)*x^Pi)modulo n_mother_code  (5)
For example, a connection unit of a PDSC (273,191) code and its shortened code performs a decoder matrix including 17 check equations defined as shown in Equation (6).
                                                                                          w                  ⁡                                      (                    0                    )                                                  =                                  XOR                  ⁢                                      {                                          272                      ,                      254                      ,                      248                      ,                      226                      ,                      222                      ,                      205                      ,                      169                      ,                      160                      ,                      157                      ,                      146                      ,                      144                      ,                      113                      ,                      106                      ,                      105                      ,                      8                      ,                      6                      ,                      76                      ,                      71                                        }                                                              ;                        ⁢                                                  ⁢                                                            w                  ⁡                                      (                    1                    )                                                  =                                  XOR                  ⁢                                      {                                          272                      ,                      266                      ,                      244                      ,                      240                      ,                      223                      ,                      187                      ,                      178                      ,                      175                      ,                      164                      ,                      162                      ,                      131                      ,                      124                      ,                      123                      ,                      104                      ,                      9                      ,                      4                      ,                      89                      ,                      17                                        }                                                              ;                        ⁢                                                  ⁢                                                            w                  ⁡                                      (                    2                    )                                                  =                                  XOR                  ⁢                                      {                                          272                      ,                      250                      ,                      246                      ,                      229                      ,                      193                      ,                      184                      ,                      181                      ,                      170                      ,                      168                      ,                      137                      ,                      130                      ,                      129                      ,                      110                      ,                      100                      ,                      9                      ,                      5                      ,                      23                      ,                      5                                        }                                                              ;                        ⁢                                                  ⁢                                                            w                  ⁡                                      (                    3                    )                                                  =                                  XOR                  ⁢                                      {                                          272                      ,                      268                      ,                      251                      ,                      215                      ,                      206                      ,                      203                      ,                      192                      ,                      190                      ,                      159                      ,                      152                      ,                      151                      ,                      132                      ,                      122                      ,                      117                      ,                      4                      ,                      5                      ,                      27                      ,                      21                                        }                                                              ;                        ⁢                                                  ⁢                                                            w                  ⁡                                      (                    4                    )                                                  =                                  XOR                  ⁢                                      {                                          272                      ,                      255                      ,                      219                      ,                      210                      ,                      207                      ,                      196                      ,                      194                      ,                      163                      ,                      156                      ,                      155                      ,                      136                      ,                      126                      ,                      121                      ,                      49                      ,                      31                      ,                      25                      ,                      3                                        }                                                              ;                        ⁢                                                  ⁢                          w              ⁡                              (                5                )                                      =                          XOR              ⁢                              {                                  272                  ,                  236                  ,                  227                  ,                  224                  ,                  213                  ,                  211                  ,                  180                  ,                  173                  ,                  172                  ,                  153                  ,                  143                  ,                  138                  ,                  66                  ,                  48                  ,                  42                  ,                  20                  ,                  16                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                6                )                                      =                          XOR              ⁢                              {                                  272                  ,                  263                  ,                  260                  ,                  249                  ,                  247                  ,                  216                  ,                  209                  ,                  208                  ,                  189                  ,                  179                  ,                  174                  ,                  102                  ,                  84                  ,                  78                  ,                  56                  ,                  52                  ,                  35                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                7                )                                      =                          XOR              ⁢                              {                                  272                  ,                  269                  ,                  258                  ,                  256                  ,                  225                  ,                  218                  ,                  217                  ,                  198                  ,                  188                  ,                  183                  ,                  111                  ,                  93                  ,                  87                  ,                  65                  ,                  61                  ,                  44                  ,                  8                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                8                )                                      =                          XOR              ⁢                              {                                  272                  ,                  261                  ,                  259                  ,                  228                  ,                  221                  ,                  220                  ,                  201                  ,                  191                  ,                  186                  ,                  114                  ,                  96                  ,                  90                  ,                  68                  ,                  64                  ,                  47                  ,                  11                  ,                  2                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                9                )                                      =                          XOR              ⁢                              {                                  272                  ,                  270                  ,                  239                  ,                  232                  ,                  231                  ,                  212                  ,                  202                  ,                  197                  ,                  125                  ,                  107                  ,                  101                  ,                  79                  ,                  75                  ,                  58                  ,                  22                  ,                  13                  ,                  10                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                10                )                                      =                          XOR              ⁢                              {                                  272                  ,                  241                  ,                  233                  ,                  214                  ,                  204                  ,                  199                  ,                  127                  ,                  109                  ,                  103                  ,                  81                  ,                  77                  ,                  60                  ,                  24                  ,                  15                  ,                  12                  ,                  1                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                11                )                                      =                          XOR              ⁢                              {                                  272                  ,                  265                  ,                  264                  ,                  245                  ,                  235                  ,                  230                  ,                  158                  ,                  140                  ,                  134                  ,                  112                  ,                  108                  ,                  91                  ,                  55                  ,                  46                  ,                  43                  ,                  32                  ,                  30                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                12                )                                      =                          XOR              ⁢                              {                                  272                  ,                  271                  ,                  252                  ,                  242                  ,                  237                  ,                  165                  ,                  147                  ,                  141                  ,                  119                  ,                  115                  ,                  98                  ,                  62                  ,                  53                  ,                  50                  ,                  39                  ,                  37                  ,                  6                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                13                )                                      =                          XOR              ⁢                              {                                  272                  ,                  253                  ,                  243                  ,                  238                  ,                  166                  ,                  148                  ,                  142                  ,                  120                  ,                  116                  ,                  99                  ,                  63                  ,                  54                  ,                  51                  ,                  40                  ,                  38                  ,                  7                  ,                  0                  ,                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                14                )                                      =                          XOR              ⁢                              {                                  272                  ,                  262                  ,                  257                  ,                  185                  ,                  167                  ,                  161                  ,                  139                  ,                  135                  ,                  118                  ,                  82                  ,                  73                  ,                  70                  ,                  59                  ,                  57                  ,                  26                  ,                  19                  ,                  18                                }                                              ;                ⁢                                  ⁢                                            w              ⁡                              (                15                )                                      =                          XOR              ⁢                              {                                  272                  ,                  267                  ,                  195                  ,                  177                  ,                  171                  ,                  149                  ,                  145                  ,                  128                  ,                  92                  ,                  83                  ,                  80                  ,                  69                  ,                  67                  ,                  36                  ,                  29                  ,                  28                  ,                  9                                }                                              ;                ⁢                                  ⁢                              w            ⁡                          (              16              )                                =                      XOR            ⁢                                          {                                  272                  ,                  200                  ,                  182                  ,                  176                  ,                  154                  ,                  150                  ,                  133                  ,                  97                  ,                  88                  ,                  85                  ,                  74                  ,                  72                  ,                  41                  ,                  34                  ,                  33                  ,                  14                  ,                  4                                }                            .                                                          (        6        )            
A majority logic unit 180 receives (2t+1)-bit data and outputs 1-bit data. Basically, if a sum of input values output from a connection unit 170 is greater than or equal to a particular threshold, the majority logic unit 180 outputs ‘1’, which indicates error detection on Bit Under Decoding (BUD). However, if the sum of input values is less than the particular threshold, the majority logic unit 180 outputs ‘0’, which indicates no-error detection on BUD.
FIG. 2 is a flowchart illustrating an operation of a decoder according to the prior art. More specifically, with reference to FIG. 2, a description will be made of an operation in the decoder illustrated in FIG. 1.
Referring to FIG. 2, in step 200, the decoder resets the decoder register 140 to a ‘zero’ state for initialization. In step 205, the decoder inputs n-bit data to the decoder register 140. In this case, the key input unit 120 passes an input n-byte data signal according to an input ‘write enable’ active signal; the key input unit 110 passes a feedback signal according to an input ‘decode enable’ active signal; and the key input unit 160 blocks an input signal according to a ‘read enable’ passive signal. In step 210, the decoder sets a BUD number to zero, and then starts decoding.
In step 215, the decoder determines if all of k bits (where k denotes the number of information bits) have been decoded. That is, the decoder determines if the number, i.e., “BUD number,” of currently decoded bits is less than the number of k bits (BUD number<k). If it is determined in step 215 that the BUD number is less than k, in step 220, the connection unit 170 uses equation 2t+1 to calculate a check result. In step 225, the connection unit 170 calculates a sum of the check results, and in step 230, the majority logic unit 180 determines if the calculated sum of check results is greater than or equal to a decision threshold, using an error detection method. If it is determined in step 230 that the calculated sum of check results is greater than the decision threshold, the decoder performs bit error correction in BUD in step 235, determining that an error is detected. However, if it is determined in step 230 that the calculated sum of check results is not greater than the decision threshold, the decoder determines that no error is detected, and does not have to perform error correction in step 235.
In step 240, as a ‘read enable’ value transitions to an active state, the key input unit (key 3) 160 outputs an input decoding result. In step 245, the decoder shifts data of the decoder register 140 by one bit and increases the BUD number by 1. Thereafter, the decoder again determines if all k bits have been decoded in step 215.
However, if it is determined in step 215 that all the k bits have been decoded, the decoder ends the decoding operation of the currently received codeword in step 250.
The foregoing conventional PDSC code-based decoding scheme can be classified mainly into two types according to the hard-input data (bi-level) such as High and Low, and the soft-input data (multi-level) such as 0.787 and 0.335.
Application of the soft-input approach, such as a Belief Propagation (BP) decoding algorithm, improves a Bit Error Rate (BER), but increases hardware complexity, thereby increasing manufacturing costs. However, application of the general hard-input technology decreases the cost of manufacturing due to its relatively simple hardware, but may cause a poor BER.
In addition, certain decoding schemes may apply only the hard-input approach rather than the soft-input approach. In this case, there is no way to improve the BER.